package co.inventario.modelo.negocio;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;

import co.inventario.datos.sqlserver.PedidoVentaInsumoDAOSQLServer;
import co.inventario.datos.sqlserver.PedidoVentaDAOSQLServer;
import co.inventario.datos.sqlserver.InsumoDAOSQLServer;
import co.inventario.entidad.PedidoVentaInsumoDTO;
import co.inventario.entidad.PedidoVentaDTO;
import co.inventario.entidad.InsumoDTO;

public class PedidoVentaInsumoNegocio {

	public void crear(PedidoVentaInsumoDTO pedidoVentaInsumoDTO, Connection connection) throws Exception, SQLException {
		PedidoVentaInsumoDAOSQLServer pedidoVentaInsumoDAOSQLServer = new PedidoVentaInsumoDAOSQLServer();
		PedidoVentaInsumoDTO pedidoVentaInsumoDTOConsultado = pedidoVentaInsumoDAOSQLServer.consultarPorConsecutivo(pedidoVentaInsumoDTO, connection);
		if (pedidoVentaInsumoDTOConsultado == null) {
			pedidoVentaInsumoDAOSQLServer.crear(pedidoVentaInsumoDTO, connection);
		} else {
			throw new Exception("El pedido de venta del insumo que intenta crear, ya existe.");
		}
	}

	public void actualizar(PedidoVentaInsumoDTO pedidoVentaInsumoDTO, Connection connection) throws Exception, SQLException {
		PedidoVentaInsumoDAOSQLServer pedidoVentaInsumoDAOSQLServer = new PedidoVentaInsumoDAOSQLServer();
		PedidoVentaInsumoDTO pedidoVentaInsumoDTOConsultado = pedidoVentaInsumoDAOSQLServer.consultarPorCodigo(pedidoVentaInsumoDTO, connection);
		if (pedidoVentaInsumoDTOConsultado != null) {
			pedidoVentaInsumoDAOSQLServer.actualizar(pedidoVentaInsumoDTO, connection);
		} else {
			throw new Exception("El pedido de venta del insumo que intenta actualizar, no existe.");
		}
	}

	public PedidoVentaInsumoDTO consultarPorCodigo(PedidoVentaInsumoDTO pedidoVentaInsumoDTO, Connection connection) throws Exception, SQLException {
		PedidoVentaInsumoDAOSQLServer pedidoVentaInsumoDAOSQLServer = new PedidoVentaInsumoDAOSQLServer();
		PedidoVentaInsumoDTO pedidoVentaInsumoDTOConsultado = pedidoVentaInsumoDAOSQLServer.consultarPorCodigo(pedidoVentaInsumoDTO, connection);
		return pedidoVentaInsumoDTOConsultado;
	}

	public ArrayList<PedidoVentaInsumoDTO> consultarTodo(Connection connection) throws Exception, SQLException {
		PedidoVentaInsumoDAOSQLServer pedidoVentaInsumoDAOSQLServer = new PedidoVentaInsumoDAOSQLServer();
		ArrayList<PedidoVentaInsumoDTO> pedidoVentaInsumoDTOLista = pedidoVentaInsumoDAOSQLServer.consultarTodo(connection);
		PedidoVentaDAOSQLServer pedidoVentaDAOSQLServer = new PedidoVentaDAOSQLServer();
		PedidoVentaDTO pedidoVentaDTO = null;
		InsumoDAOSQLServer insumoDAOSQLServer = new InsumoDAOSQLServer();
		InsumoDTO insumoDTO = null;
		for (PedidoVentaInsumoDTO pedidoVentaInsumoDTO : pedidoVentaInsumoDTOLista) {
			pedidoVentaDTO = pedidoVentaDAOSQLServer.consultarPorCodigo(pedidoVentaInsumoDTO.getPedidoVentaDTO(), connection);
			pedidoVentaInsumoDTO.setPedidoVentaDTO(pedidoVentaDTO);
			insumoDTO = insumoDAOSQLServer.consultarPorCodigo(pedidoVentaInsumoDTO.getInsumoDTO(), connection);
			pedidoVentaInsumoDTO.setInsumoDTO(insumoDTO);
		}
		return pedidoVentaInsumoDTOLista;
	}
}
